<?php

class indexController extends Controller {
    public function __construct() {
        parent::__construct();
        $this->_view->setLayout("PdP");
    }
    public function index(){
        $this->_view->renderizar('index', 'inicio');
    }
//  //  //  //  //  //  //  //  //  //  //  //  //  //  //  //  //  //  //  //  //  //  //  //  //  //  //  //  //  //  //  //  //  //  //  //  //  //  //  //  //  //  //  //  //  //
    public function ped(){
        $this->_view->assign('titulo', 'PDPMA | Pedidos');
        
        $almprod = $this->loadModel("AlmProd",'dux');
        $clientes = $this->loadModel("Clientes",'dux');
        $paroen = $this->loadModel("Paroen",'dux');
        $oentrega = $this->loadModel("oentrega",'dux');
        $maquinapieza = $this->loadModel("MaquinaPieza");
        
    //  obtienes listado de paroen
        $paroen->open();
        $sql =
            'SELECT ALMPROD.producto, PAROEN.doctoadicionalfecha As entrega, CLIENTES.nivelriesgo, SUM(cantidad) AS totcantidad, SUM(saldocantidad) AS totsaldo
            FROM "ALMPROD.gen" ALMPROD, "PAROEN.cli" PAROEN, "OENTREGA.cli" OENTREGA, "CLIENTES.gen" CLIENTES
            WHERE
            (ALMPROD.producto = PAROEN.PRODUCTO) AND
            (OENTREGA.codigo = PAROEN.codigo) AND
            (OENTREGA.cliente = CLIENTES.codigo) AND
            
            (ALMPROD.ALMACEN In (\'CTA\',\'PMA\',\'PMA2\')) AND
            (Paroen.DOCTOADICIONALFECHA>={d \'2014-01-01\'})
            
            GROUP BY ALMPROD.PRODUCTO, PAROEN.doctoadicionalfecha, CLIENTES.nivelriesgo
            ORDER BY PAROEN.doctoadicionalfecha
        ';
        $Paroen = $paroen->lista($sql);
        $paroen->close();
    //  obtener lo programado y lo hecho
        
        foreach($Paroen as $poe){
            
        //  acomodo de fechas
            $aux = explode('/',$poe['entrega']);
            $poe['entrega'] = $aux[2]."-".$aux[1]."-".$aux[0];
            $poe['nivelriesgo'] = trim(chop($poe['nivelriesgo']));
        //  Restarle el nivelriesgo
            if($poe['nivelriesgo'] <> ""){
                $poe['entrega'] = date('Y-m-d',strtotime($poe['entrega']." ".$poe['nivelriesgo']." days"));
            }

            $poe["Semana"] = $this->getWeek($poe['entrega'],false);
            $poe["Seman2"] = date("Y-m-d",strtotime($poe["entrega"]));
            $Paroen2[$poe["producto"]]['parte'] = chop($poe['producto']);
            $Paroen2[$poe["producto"]]['exist'] = chop($poe['totcantidad']);
            $Paroen2[$poe["producto"]][date("W",strtotime($poe["entrega"]))] = $poe;
        //  obtener la maquina en que se trabaja el producto
            $maquinapieza->open();
            $MaquinaPieza = $maquinapieza->element($poe['producto']);
            $Paroen2[$poe["producto"]]['maqs'] = $MaquinaPieza;
            $maquinas[trim($poe["producto"])] = $MaquinaPieza;
        }
        $this->_view->assign('Paroen', $Paroen2);
        $this->_view->assign('listmaq', $maquinas);
        $this->_view->assign('sem', date('W'));
        $this->_view->renderizar('PED', 'Pedidos');
    }
    
    public function ped2($semana = null){
        if(!isset($semana)){
            $semana = -1;
        }
        echo "<h1>$semana</h1>";
        $this->_view->assign('titulo', 'PDPMA | Pedidos');
        
        $almprod = $this->loadModel("AlmProd",'dux');
        $clientes = $this->loadModel("Clientes",'dux');
        $paroen = $this->loadModel("Paroen",'dux');
        $oentrega = $this->loadModel("oentrega",'dux');
        $maquinapieza = $this->loadModel("MaquinaPieza");
        
    //  obtienes listado de paroen
        $paroen->open();
        $sql =
            'SELECT ALMPROD.producto, PAROEN.doctoadicionalfecha As entrega, CLIENTES.nivelriesgo, SUM(cantidad) AS totcantidad, SUM(saldocantidad) AS totsaldo
            FROM "ALMPROD.gen" ALMPROD, "PAROEN.cli" PAROEN, "OENTREGA.cli" OENTREGA, "CLIENTES.gen" CLIENTES
            WHERE
            (ALMPROD.producto = PAROEN.PRODUCTO) AND
            (OENTREGA.codigo = PAROEN.codigo) AND
            (OENTREGA.cliente = CLIENTES.codigo) AND
            
            (ALMPROD.ALMACEN In (\'CTA\',\'PMA\',\'PMA2\')) AND
            (Paroen.DOCTOADICIONALFECHA>={d \'2014-01-01\'})
            
            GROUP BY ALMPROD.PRODUCTO, PAROEN.doctoadicionalfecha, CLIENTES.nivelriesgo
            ORDER BY PAROEN.doctoadicionalfecha
        ';
        $Paroen = $paroen->lista($sql);
        $paroen->close();
    //  obtener lo programado y lo hecho
        
        foreach($Paroen as $poe){
            $poe["producto"] = trim($poe["producto"]);
        //  acomodo de fechas
            $aux = explode('/',$poe['entrega']);
            $poe['entrega'] = $aux[2]."-".$aux[1]."-".$aux[0];
            $poe['nivelriesgo'] = trim(chop($poe['nivelriesgo']));
        //  Restarle el nivelriesgo
            if($poe['nivelriesgo'] <> ""){
                $poe['entrega'] = date('Y-m-d',strtotime($poe['entrega']." ".$poe['nivelriesgo']." days"));
            }
            $poe["Semana"] = $this->getWeek($poe['entrega'],false);
            $poe["Seman2"] = date("Y-m-d",strtotime($poe["entrega"]));
            $Paroen2[$poe["producto"]]['parte'] = chop($poe['producto']);
            $Paroen2[$poe["producto"]]['exist'] = chop($poe['totcantidad']);
            $Paroen2[$poe["producto"]][date("W",strtotime($poe["entrega"]))] = $poe;
        //  obtener la maquina en que se trabaja el producto
            $maquinapieza->open();
            $MaquinaPieza = $maquinapieza->element($poe['producto']);
            $Paroen2[$poe["producto"]]['maqs'] = $MaquinaPieza;
            if($semana <> -1){
                if($poe["Semana"] <> $semana){
                    unset($Paroen2[$poe["producto"]]);
                }
            }
        }
        //print_r($Paroen2);
        $this->_view->assign('Paroen', $Paroen2);
        $this->_view->assign('sem', date('W'));
        $this->_view->renderizar('PED2', 'Pedidos');
    }
//  //  //  //  //  //  //  //  //  //  //  //  //  //  //  //  //  //  //  //  //  //  //  //  //  //  //  //  //  //  //  //  //  //  //  //  //  //  //  //  //  //  //  //  //  //
    public function cta(){
        $this->_view->assign('titulo', 'PDPMA | En CTA');
        
        $almprod = $this->loadModel("AlmProd",'dux');
        $clientes = $this->loadModel("Clientes",'dux');
        $paroen = $this->loadModel("Paroen",'dux');
        $oentrega = $this->loadModel("oentrega",'dux');
        $maquinapieza = $this->loadModel("MaquinaPieza");
        $pieza = $this->loadModel("pdp_pieza");
        $cta = $this->loadModel("pdp_cta");
        
        $pieza->open();
        $almprod->open();
        $clientes->open();
        $paroen->open();
        $oentrega->open();
        $maquinapieza->open();
        $cta->open();
        
        $lista_pieza = $pieza->lista("SELECT Producto FROM maquinado.pdp_pieza");
        
        $piezas_ok = array();
        $i = 0;
        
        foreach($lista_pieza as $lp){
            $piezas_ok[$i] = $lp['Producto'];
            $i++;
        }
        
        //var_dump($piezas_ok);
        
        $week = date('W');
        
/////>
        $sql =
            'SELECT ALMPROD.producto, PAROEN.doctoadicionalfecha As entrega, CLIENTES.nivelriesgo, SUM(cantidad) AS totcantidad, SUM(saldocantidad) AS totsaldo
            FROM "ALMPROD.gen" ALMPROD, "PAROEN.cli" PAROEN, "OENTREGA.cli" OENTREGA, "CLIENTES.gen" CLIENTES
            WHERE
            (ALMPROD.producto = PAROEN.PRODUCTO) AND
            (OENTREGA.codigo = PAROEN.codigo) AND
            (OENTREGA.cliente = CLIENTES.codigo) AND
            
            (ALMPROD.ALMACEN In (\'CTA\',\'PMA\',\'PMA2\')) AND
            (Paroen.DOCTOADICIONALFECHA>={d \'2014-01-01\'})
            
            GROUP BY ALMPROD.PRODUCTO, PAROEN.doctoadicionalfecha, CLIENTES.nivelriesgo
            ORDER BY PAROEN.doctoadicionalfecha
        ';
        $emb = $paroen->lista($sql);
        $semana = array();
        foreach($emb as &$poe){
            $poe["producto"] = trim($poe["producto"]);
        //  acomodo de fechas
            $aux = explode('/',$poe['entrega']);
            
            $poe['entrega'] = $aux[2]."-".$aux[1]."-".$aux[0];
            $poe['nivelriesgo'] = trim(chop($poe['nivelriesgo']));
        //  Restarle el nivelriesgo
            if($poe['nivelriesgo'] <> ""){
                $poe['entrega'] = date('Y-m-d',strtotime($poe['entrega']." ".$poe['nivelriesgo']." days"));
            }
            $poe['WEntrega'] = date('W', strtotime($poe['entrega']));
            $poe['YEntrega'] = date('Y', strtotime($poe['entrega']));
            $poe['inputWeek'] = "$poe[YEntrega]-W".str_pad($poe['WEntrega'],2,0,STR_PAD_LEFT);
            $poe["Semana"] = $this->getWeek($poe['entrega'],false);
            $poe["Seman2"] = date("Y-m-d",strtotime($poe["entrega"]));
            $embarque[$poe["producto"]] = $poe;
            
            $ps['item']   = $poe["producto"];
            $ps['semana'] = date('W',strtotime($poe["Semana"]));
            $ps['fecha']  = $poe["Semana"];
            $ps['week']   = $poe['inputWeek'];
            
            $aux[$ps['item']] = $ps;
            
            $semana[$ps['item']] = $poe['inputWeek'];
        }
/////>
        
        $sql = "
            SELECT ALMPROD.PRODUCTO, Sum(ALMPROD.EXISTENCIA)
            FROM \"ALMPROD.gen\" ALMPROD
            WHERE (ALMPROD.EXISTENCIA<>0) AND (ALMPROD.ALMACEN In ('CTA','PMA','PMA2'))
            GROUP BY ALMPROD.PRODUCTO";
        $almprod2 = $almprod->lista($sql);
        
        $sql = "
            SELECT *
            FROM maquinado.pdp_cta
            WHERE Semana = $week";
        $cta2 = $cta->lista($sql);
        
        $flag = count($cta2);
        
        $almprod->close();
        $clientes->close();
        $paroen->close();
        $oentrega->close();
        
        $maqs = array();
        
        $aio = date('Y');
        $field = "llave, Pieza, Cantidad, CTA, Maquina, Minutos, Semana, Aio, SemEntrega";
        
        //print_r($semana);
        foreach($almprod2 as &$arr){
            if( !isset($semana[$arr['producto']]) ){
                $semana[$arr['producto']] = "0000-W00";
            }
            $arr['producto'] = trim($arr['producto']);
            
            //$arr['inputweek'] = $semana[$arr['producto']];
        //  aqui esta el error
            $x = $maquinapieza->get('Pieza',"'" . $this->getTexto2($arr['producto'] . "'"));
            $y = $pieza->get('Producto', "'" . $this->getTexto2($arr['producto'] . "'"));
            $p = trim($arr['producto']);
        //  -----
            
            $arr['cta'] = (int)$arr[''];
            @$arr['maq'] = $maquinapieza->_Maquina;
            @$arr['min'] = $maquinapieza->_Minutos;
            @$arr['TMaquinado'] = (int)$pieza->_TMaquinado;
            @$arr['Minutos1maquinado'] = $maquinapieza->_Minutos1maquinado;
            
            
            if($arr['maq'] == ""){
                $arr['maq'] = "--- ---";
                $arr['min'] = 0;
                $arr['Minutos1maquinado'] = 0;
            }
            if($arr['TMaquinado'] <> ''){
                $arr['min'] = $arr['TMaquinado'];
            }
            
            if( isset($maquinapieza->_siguiente) )
            {
                $this->time = 0;
                $this->listado($maquinapieza);
                $arr['min'] = $this->time;
            }
            $llave = $week.$p;
            
            $arr['min'] = $arr['cta'] * $arr['min'];
            
            //  Quitar los movimientos financieros
            if(trim($arr['producto']) == "PRAJ10"){
                $arr['cta'] = 0;
            }
            if(trim($arr['producto']) == "PRAJ11"){
                $arr['cta'] = 0;
            }
            if(trim($arr['producto']) == "PRAJ12"){
                $arr['cta'] = 0;
            }
            
            @$value = "'$llave', '$p', $arr[cta], $arr[cta], '$arr[maq]', $arr[min], $week, $aio, '$semana[$p]'";
            //echo $value."\n";
            
            if( in_array($p,$piezas_ok) ){
                $ssql['query'] = "INSERT INTO maquinado.pdp_cta($field) VALUES($value)";
                $ssql['key'] = $llave;
                $sql_cta[] = $ssql;
            }
            
            $m_req = $arr['min']*$arr['cta'];

        //  Sumatorias al arreglo de maquinas
            if($arr['maq'] <> ""){
                
                if( isset($maqs[$arr['maq']]) ){
                    $maqs[$arr['maq']] += $m_req;
                }
                else{
                    $maqs[$arr['maq']] = $m_req;
                }
            }
            unset($arr['']);
        }
        
        
        $key = array_keys($maqs);
        $maq2 = array();
        
        foreach($key as &$llave)
        {
            $aux['maquina'] = $llave;
            $aux['minutos'] = $maqs[$llave];
            $maq2[] = $aux;
        }
        //var_dump($sql_cta);
        
//      paso 2

        if($flag == 0){
            foreach($sql_cta as $sql){
                //aqui va la consulta de insercion
                //echo $sql['query']."<br/>";
                //$to_query = $cta->setQuery($sql['query']);
            }
        //$to_query = $cta->setQuery("DELETE FROM maquinado.pdp_cta WHERE Pieza IN('PRAJ10', 'PRAJ11', 'PRAJ12')");
        }
        else
        {
            echo "<h1>Hay que actualizar existencias & agegar faltantes</h1>";
            $cta_ns = $this->loadModel("pdp_cta");
            $cta_ns->open();
            foreach($almprod2 as &$almprod){
            //  <SemanaEntrega>  //
                @$almprod['SemanaEntrega'] = $semana[$almprod['producto']];
            //  </SemanaEntrega> //
                @$almprod['semana'] = date("W");
                @$almprod['aio'] = date("Y");
                $almprod['producto'] = str_replace('�',"&Ntilde",$almprod['producto']);
                $almprod['llave'] = $almprod['semana'].$almprod['producto'];
                $sql_list = "SELECT * FROM maquinado.pdp_cta WHERE Pieza = '$almprod[producto]' AND Semana = ".date("W");
                $x = $cta_ns->lista($sql_list);
                $almprod['contador'] = count($x);
                if($almprod['contador'] <> 0){
                //  Significa que ya existe, solo actualizo su existencia en CTA
                    $sql = "UPDATE maquinado.pdp_cta SET CTA = $almprod[cta] WHERE Pieza = '$almprod[producto]' AND Semana = ".date("W");
                }else{
                //  Significa que no existe, lo agrego al sistema, siempre y cuando, las sigientse semanas no esten programados
                    //$yaprogramados = 
                    $field = "llave, Pieza, Cantidad, Maquina, Minutos, Semana, Aio, CTA, SemEntrega, Prioridad, Programado";
                    $value = "'$almprod[llave]', $almprod[producto], $almprod[cta], '$almprod[maq]', $almprod[TMaquinado],
                    $almprod[semana], $almprod[aio], $almprod[cta], '$almprod[SemanaEntrega]', 0, 0";
                    $sql = "INSERT INTO maquinado.pdp_cta($field)VALUES($value)";
                }
                $almprod['sql'] = $sql;
                //$cta_ns->setQuery($sql);
            }
            //print_r($almprod2);
            //echo '<meta http-equiv="refresh" content="0;url=http://servidor1:82/maquinado/index/cta2"/>';
        }
        
        $this->_view->assign('tabla', $almprod2);
        $this->_view->assign('maquinas', $maq2);
        $this->_view->renderizar('cta', 'CTA');
    }
//  //  //  //  //  //  //  //  //  //  //  //  //  //  //  //  //  //  //  //  //  //  //  //  //  //  //  //  //  //  //  //  //  //  //  //  //  //  //  //  //  //  //  //  //  //
    public function cta2($wek = null){
        if(!isset($wek)){
            $wek = date('W');
        }
        if($wek > 53){
            $wek = 1;
        }
        if($wek < 1){
            $wek = 53;
        }
        
        //////////////////
        $max_cols = 4;////
        //////////////////
        
        for($i=0;$i<$max_cols;$i++){
            $sems[] = $wek+$i;
        }
        $cta = $this->loadModel("pdp_cta");
        $maquinapieza = $this->loadModel("MaquinaPieza");
        $empleado = $this->loadModel("Empleado",'dux');
        $almprod = $this->loadModel("AlmProd",'dux');
        
        $almprod->open();
        
    //  Para embarque
        $sql = 'SELECT ALMPROD.producto, PAROEN.doctoadicionalfecha As entrega, CLIENTES.nivelriesgo, SUM(cantidad) AS totcantidad, SUM(saldocantidad) AS totsaldo
            FROM "ALMPROD.gen" ALMPROD, "PAROEN.cli" PAROEN, "OENTREGA.cli" OENTREGA, "CLIENTES.gen" CLIENTES
            WHERE
            (ALMPROD.producto = PAROEN.PRODUCTO) AND
            (OENTREGA.codigo = PAROEN.codigo) AND
            (OENTREGA.cliente = CLIENTES.codigo) AND
            
            (ALMPROD.ALMACEN In (\'CTA\')) AND
            (Paroen.DOCTOADICIONALFECHA>={d \'2014-01-01\'})AND
            (ALMPROD.EXISTENCIA <> 0)
            
            GROUP BY ALMPROD.PRODUCTO, PAROEN.doctoadicionalfecha, CLIENTES.nivelriesgo
            ORDER BY PAROEN.doctoadicionalfecha
        ';
        
        $aux = $almprod->lista($sql);
        
        $sem = array($wek, $wek+1);
        
        foreach($aux as $mbb){
            $hlp['producto'] = trim($mbb['producto']);
            $hlp_dat = explode("/",$mbb['entrega']);
            $hlp['entrega'] = $hlp_dat[2]."-".$hlp_dat[1]."-".$hlp_dat[0];
            $hlp['nivelriesgo'] = trim($mbb['nivelriesgo']);
            if($hlp['nivelriesgo'] <> null){
                $hlp['embarque'] = date('Y-m-d',strtotime($hlp['entrega']." ".$hlp['nivelriesgo']." days"));
                $hlp['E_semana'] = date('W',strtotime($hlp['embarque']));
                $hlp['E_aio'] = date('Y',strtotime($hlp['embarque']));
            }else{
                $hlp['embarque'] = $hlp['entrega'];
                $hlp['E_semana'] = date('W',strtotime($hlp['embarque']));
                $hlp['E_aio'] = date('Y',strtotime($hlp['embarque']));
            }
            $hlp['totcantidad'] = (int)$mbb['totcantidad'];
            $emb[ $hlp['producto'] ] = $hlp;
            
            if($hlp['E_semana'] == $sem[0]){
                $cols[ $hlp['producto'] ]['C0'] = $hlp['totcantidad'];
            }
            if($hlp['E_semana'] == $sem[1]){
                $cols[ $hlp['producto'] ]['C1'] = $hlp['totcantidad'];
            }
        }
        
    //  Lista de empleados activos echo
        $empleado->open();
        $sql = "SELECT Empleado.CODIGOANTERIOR, Empleado.NOMBRECOMPLETO
        FROM \"Empleado.nom\" Empleado
        WHERE (Empleado.ESTATUS<>'Baja') AND (Empleado.PUESTO IN('MAA 01','MAA 02'))
        ORDER BY Empleado.CODIGOANTERIOR";
        $operador = $empleado->lista($sql);
        $empleado->close();
        $cta->open();
        
    //  Lista de productos en CTA
        $sql = "SELECT almprod.PRODUCTO, Sum(almprod.EXISTENCIA) cta
        FROM \"almprod.gen\" almprod
        WHERE (almprod.ALMACEN In ('CTA')) AND
        almprod.EXISTENCIA <> 0 AND
        almprod.PRODUCTO NOT IN('PRAJ10','PRAJ11','PRAJ12')
        GROUP BY almprod.PRODUCTO
        ORDER BY almprod.PRODUCTO";
        $pdp_cta = $almprod->lista($sql);
        
        foreach($pdp_cta as $pdp){
        //  Aramndo un arreglo de productos para futura busqueda
            $in_cta[] = trim($pdp['producto']);
        }
        $maquinapieza->open();
        $aio = date('Y');
        
      //Reviso todo lo programado en pdp_cta
        $sems = implode(", ",$sems);
        $sql = "SELECT pdp_cta.*, maq_piezas.Hold
        FROM maquinado.pdp_cta
        INNER JOIN maquinado.maq_piezas ON maquinado.maq_piezas.IDENTIFICACION = maquinado.pdp_cta.Pieza
        WHERE maquinado.pdp_cta.Semana IN($sems)";
        $programado = $maquinapieza->lista($sql);
        foreach($programado as $prg){
        //  Aramndo un arreglo de productos para futura busqueda
            $lprod[] = $prg['Pieza'];
            if( in_array($prg['Pieza'],$in_cta) ){
                //  DO... NOTHING
            }else{
                $aux['producto'] = $prg['Pieza'];
                $aux['cta'] = "0";
                $pdp_cta[] = $aux;
            }
        }
        
        foreach($pdp_cta as &$ctax){
            $ctax['producto'] = trim(chop($ctax['producto']));
            $ctax['C0'] = "";
            $ctax['C1'] = "";
        //  Aqui agrego lo de los embarques
            if( isset( $cols[$ctax['producto']]['C0'] ) ){
                $ctax['C0'] = $cols[$ctax['producto']]['C0'];
            }
            if( isset( $cols[$ctax['producto']]['C1'] ) ){
                $ctax['C1'] = $cols[$ctax['producto']]['C1'];
            }
            
            //var_dump($ctax['C0'],$ctax['C1']);
            //echo "<hr>";
            
            $ctax['cta'] = (int)$ctax['cta'];
            $ctax['producto'] = trim($ctax['producto']);
            $ctax['Pieza'] =    $ctax['producto'];
        //  ALMACEN CTA
            $sql = "SELECT ALMPROD.ALMACEN, ALMPROD.PRODUCTO, ALMPROD.EXISTENCIA
            FROM \"ALMPROD.gen\" ALMPROD
            WHERE (ALMPROD.PRODUCTO='$ctax[producto]') AND (ALMPROD.ALMACEN='PLA')";
            
            $alm_cta = $almprod->lista($sql);
            
            if( count($alm_cta) > 0 ){
                $alm_cta[0]['existencia'] = (int)$alm_cta[0]['existencia'];
                $ctax['pla'] = $alm_cta[0]['existencia'];
            }else{
                $ctax['pla'] = 0;
            }
            
        //  ALMACEN PLA
            $sql = "SELECT ALMPROD.ALMACEN, ALMPROD.PRODUCTO, ALMPROD.EXISTENCIA
            FROM \"ALMPROD.gen\" ALMPROD
            WHERE (ALMPROD.PRODUCTO='$ctax[producto]') AND (ALMPROD.ALMACEN IN('PMA', 'PMA2'))";
            
            $alm_pla = $almprod->lista($sql);
            
            if( count($alm_pla) > 0 ){
                $alm_pla[0]['existencia'] = (int)$alm_pla[0]['existencia'];
                $ctax['pma'] = $alm_pla[0]['existencia'];
            }else{
                $ctax['pma'] = 0;
            }
            
        //  ALMACEN PTA
            $sql = "SELECT ALMPROD.ALMACEN, ALMPROD.PRODUCTO, ALMPROD.EXISTENCIA
            FROM \"ALMPROD.gen\" ALMPROD
            WHERE (ALMPROD.PRODUCTO='$ctax[producto]') AND (ALMPROD.ALMACEN='PTA')";
            
            $alm_pla = $almprod->lista($sql);
            
            if( count($alm_pla) > 0 ){
                $alm_pla[0]['existencia'] = (int)$alm_pla[0]['existencia'];
                $ctax['pta'] = $alm_pla[0]['existencia'];
            }else{
                $ctax['pta'] = 0;
            }
            
        //  OTHER
            $sql = "SELECT * FROM maquinado.pdp_cta WHERE Aio = $aio AND Semana = $wek AND 'Pieza' like '%$ctax[producto]%' ORDER BY Maquina, Prioridad, SemEntrega";
            $sql = str_replace("Ñ","&Ntilde",$sql);
            $mpieza = $maquinapieza->lista($sql);
            if( count($mpieza) <> 0 ){
                
                $ctax['llave'] =        $mpieza[0]['llave'];
                $ctax['Cantidad'] =     $mpieza[0]['Cantidad'];
                $ctax['Maquina'] =      $mpieza[0]['Maquina'];
                $ctax['Minutos'] =      $mpieza[0]['Minutos'];
                $ctax['Semana'] =       $mpieza[0]['Semana'];
                $ctax['Aio'] =          $mpieza[0]['Aio'];
            
                $ctax['SemEntrega'] =   $mpieza[0]['SemEntrega'];
                
                $ctax['Prioridad'] =    $mpieza[0]['Prioridad'];
                $ctax['Programado'] =   $mpieza[0]['Programado'];
            }else{
                $ctax['llave'] =        $wek.$ctax['producto'];
                $ctax['Cantidad'] =     $ctax['cta'];
                $ctax['Maquina'] =      null;
                $ctax['Minutos'] =      '0';
                $ctax['Semana'] =       $wek;
                $ctax['Aio'] =          $aio;
                $ctax['SemEntrega'] =   null;
                $ctax['Prioridad'] =    '0';
                $ctax['Programado'] =   '0';
            }
        //  Semana de entrega, sin a�o
            if($ctax['SemEntrega']<> ''){
                $hlp = explode(" S",$ctax['SemEntrega']);
                @$ctax['SemEntrega'] = $hlp[1];
            }

        //  Revisar si tiene estado HOLD
            $part = str_replace("�",'Ntilde;',$ctax['producto']);
            $sql = "SELECT * FROM maquinado.maq_piezas WHERE IDENTIFICACION = '$part'";
            $hld = $maquinapieza->lista($sql);
            if( count($hld) > 0){
                $ctax['Hold'] = $hld[0]['Hold'];
            }else{
                $ctax['Hold'] = "0";
            }
        }
        $almprod->close();
        
    //  Genero un arreglo para las maquinas
        $maqs = array();
        $maqs2 = array();
        foreach($pdp_cta as &$pieza){
            $mkn = $pieza['Maquina'];
            $noasign = array();
            $part = $pieza['Pieza'];
            $opart = $part;
            $part = str_replace("�",'Ntilde;',$part);
            
            $sql = "SELECT * FROM maquinado.pdp_maquina_pieza WHERE Pieza = '$part' AND OP = 10";
            $maq[$opart] = $maquinapieza->lista($sql);
            
            $pieza['maq_cnt'] = count($maq[$opart]);
            
            if($pieza['maq_cnt'] == 0){
                $pieza['color'] = "orange";
                $pieza['MaqAsg'] = false;
                $pieza['mins_pp'] = 0;
            }else{
                $pieza['color'] = "Initial";
                $pieza['MaqAsg'] = true;
                $pieza['mins_pp'] = $maq[$opart][0]['Minutos'];
            }
            
            if( !isset($maqs[$mkn]) ){
            //  Busco en la matriz maquina-operador
                $sql = "SELECT * FROM maquinado.maquina_operador WHERE maquina = '$mkn'";
                $lst_op = $maquinapieza->lista($sql);
                $maqs[$mkn]['operador'] = $lst_op;
            //  Listo.
                $maqs[$mkn]['Minutos'] = $pieza['Minutos'];
                $maqs[$mkn]['Maquina'] = $mkn;
                
                $maqs2[$mkn] = $maqs[$mkn];
                
            }else{
                $maqs[$mkn]['Minutos'] += $pieza['Minutos'];
                $maqs2[$mkn]['Minutos'] += $pieza['Minutos'];
            }
            $aux[$pieza['Pieza']] = $pieza;
        }
        $noasign = array();
        foreach($pdp_cta as &$pieza){
            $pieza["SemEntrega"] = str_replace("-W"," S",$pieza["SemEntrega"]);
            @$pieza['realCTA'] = $real[$pieza['Pieza']]['cta'];
            if($pieza['MaqAsg'] == false){
                $noasign[] = $pieza['Pieza'];
            }
        }

        foreach($maqs as $mqn){
            $sql = "INSERT INTO maquinado.pdp_maquina_turnos(semana, maquina, Minutos)VALUES('$wek', '$mqn[Maquina]', '$mqn[Minutos]')";
            if($mqn['Maquina'] <> "--- ---"){
                $maquinapieza->setQuery($sql);
            }
        }

        
    //  SI NO EXISTE, PONLO, SI YA EXISTE, MUESTRALO (ESTA SEMANA)
        $sql = "SELECT * FROM maquinado.pdp_maquina_turnos WHERE semana = $wek";
        $rev = $maquinapieza->lista($sql);
        if( count($rev)== 0 ){
            echo "Se genero la lista";
            foreach($maqs as $mqn){
                $sql = "INSERT INTO maquinado.pdp_maquina_turnos(semana, maquina, Minutos)VALUES('$wek', '$mqn[Maquina]', '$mqn[Minutos]')";
                if($mqn['Maquina'] <> "--- ---"){
                    $maquinapieza->setQuery($sql);
                }

            }
        }else{
            $js = "";
            foreach($rev as $rv){
                $maqm = str_replace(" ","",$rv['maquina'])."M";
                $maqv = str_replace(" ","",$rv['maquina'])."V";
                $maqn = str_replace(" ","",$rv['maquina'])."N";
                
                $js .= "$('.$maqm option[value=$rv[Matutino]]').attr('selected',true)"."\n";
                $js .= "$('.$maqv option[value=$rv[Vespertino]]').attr('selected',true)"."\n";
                $js .= "$('.$maqn option[value=$rv[Nocturno]]').attr('selected',true)"."\n";
            }
        }
        
    //  SI NO EXISTE, PONLO, SI YA EXISTE, MUESTRALO (SIGUENTE SEMANA)
        $wek2 = $wek+1;
        $sql = "SELECT * FROM maquinado.pdp_maquina_turnos WHERE semana = $wek2";
        $rev2 = $maquinapieza->lista($sql);
        if( count($rev2)== 0 ){
            echo "Se genero la lista";
            foreach($maqs2 as $mqn){
                $sql = "INSERT INTO maquinado.pdp_maquina_turnos(semana, maquina, Minutos)VALUES('$wek2', '$mqn[Maquina]', '$mqn[Minutos]')";
                if($mqn['Maquina'] <> "--- ---"){
                    $maquinapieza->setQuery($sql);
                }
            }
        }else{
            $js2 = "";
            foreach($rev2 as $rv){
                $maq2m = str_replace(" ","",$rv['maquina'])."M";
                $maq2v = str_replace(" ","",$rv['maquina'])."V";
                $maq2n = str_replace(" ","",$rv['maquina'])."N";
                
                $js2 .= "$('.$maq2m option[value=$rv[Matutino]]').attr('selected',true)"."\n";
                $js2 .= "$('.$maq2v option[value=$rv[Vespertino]]').attr('selected',true)"."\n";
                $js2 .= "$('.$maq2n option[value=$rv[Nocturno]]').attr('selected',true)"."\n";
            }
        }   
        
    //  Veo si hay produccion programada en las siguentes [$max_cols] semanas Red
        
    //  Arreglo para totales
        for($i=0;$i<4;$i++){
            $tot["m".$i] = 0;
        }
        foreach($pdp_cta as &$pdp){
            for($i=0;$i<$max_cols;$i++){
                $pdp['valores']["s".$i] = null;
            }
        }
        
        foreach($pdp_cta as &$pdp){
            $json = "";
            for($i=0;$i<$max_cols;$i++){
                
                $scalc = $wek+$i;
                $pdp['valores']["s".$i] = $scalc;
                $pdp['producto'] = str_replace("Ñ","XXX",$pdp['Pieza']);
                $pdp['Pieza1'] = str_replace("&Ntilde;","XXX",$pdp['Pieza']);
                
                $sql = "SELECT * FROM maquinado.pdp_cta WHERE Semana = $scalc AND Pieza = '$pdp[producto]';";
                
                $rev = $maquinapieza->lista($sql);
                if( count($rev) == 0){
                    $pdp['valores']["s".$i] = 0;
                    $pdp['tiempos']["m".$i] = 0;
                }else{
                    $pdp['valores']["s".$i] = $rev[0]['Cantidad'];
                    $pdp['tiempos']["m".$i] = $rev[0]['Minutos'];
                }
                $json .= "s".$i." : $('#reg_' + nombre + ' ."."s".$i."').val(),"."\n";
            }
        }
    //  Ordenar $pdp_cta
        foreach($pdp_cta as &$pdp){
            if( $pdp['Maquina'] == '' ){
                if( isset( $maq["$pdp[producto]"][0] ) ){
                    $pdp['Maquina'] = $maq["$pdp[producto]"][0]['Maquina'];
                }
            }
        }
        
        foreach($pdp_cta as $clave => $fila){
            $maquina[$clave] = $fila['Maquina'];
            $program[$clave] = $fila['Programado'];
            $priorid[$clave] = $fila['Prioridad'];
               $hold[$clave] = $fila['Hold'];
        }
        
        array_multisort($hold,SORT_ASC,$program,SORT_DESC,$maquina,SORT_ASC,$priorid,SORT_ASC,$pdp_cta);
        
        //print_r($pdp_cta);
        
        foreach($pdp_cta as &$pdp){
            if($pdp['pla'] == '0'){$pdp['pla']='&nbsp;';}
            if($pdp['pma'] == '0'){$pdp['pma']='&nbsp;';}
            if($pdp['pta'] == '0'){$pdp['pta']='&nbsp;';}
            foreach($pdp['tiempos'] as $key => $valor){
                if($pdp['Hold'] == 0){
                    @$tot[$key] += (int)$valor;
                }
            }
        }
        
        //var_dump($maq);
        
        @$this->_view->assign('json', $json);
        @$this->_view->assign('tot', $tot);
        @$this->_view->assign('js', $js);
        @$this->_view->assign('js2', $js2);
        @$this->_view->assign('js0', $js0);
        $this->_view->assign('max_cols', $max_cols);
        $this->_view->assign('tabla', $pdp_cta);
        $this->_view->assign('semana', $wek);
        @$this->_view->assign('maquina', $maq);
        @$this->_view->assign('r_maqs', $maqs);
        @$this->_view->assign('r_maqs2', $maqs2);
        @$this->_view->assign('operador', $operador);
        @$this->_view->assign('jsonMaquina', json_encode($maq));
        $this->_view->assign('titulo', 'PDPMA | En CTA');
        $this->_view->renderizar('cta2','');
    }

    public function cta3($wek = null){
        
        //$wek != '' ? $wek : date('W');
        if(!isset($wek)){
            $wek = date('W');
        }
        include "http://servidor/Util_101/EficienciaTotal.php?week=".$wek;
        $cta = $this->loadModel("pdp_cta");
        $ete = $this->loadModel("tempete");
        
        $aio = date('Y');
        
        
        $cta->open();
        $sql = "SELECT * FROM maquinado.pdp_cta WHERE Aio = $aio AND Semana = $wek ORDER BY Maquina, Prioridad, SemEntrega";
        $pdp_cta = $cta->lista($sql);
        
        $ete->open();
        
        
        //var_dump($pdp_cta);
        $cont = 0;
        foreach($pdp_cta as &$pdp){
            $sql = "SELECT * FROM maquinado.tempete WHERE Aio = $pdp[Aio] AND Semana = $pdp[Semana] AND Producto = '$pdp[Pieza]';";
            $done = $cta->lista($sql);
            if( !isset($done[0]['Hechas']) ){
                $done[0]['Hechas'] = 0;
                $done[0]['Rechazo'] = 0;
            }
            $pdp['Hechas'] = (int)$done[0]['Hechas'];
            $pdp['Rechazo'] = (int)$done[0]['Rechazo'];
            $x = $pdp['Cantidad'] - $pdp['Hechas'];
            $pdp['Hechas'] -= $pdp['Rechazo'];
            $pdp['color'] = "transparent";
            if(($pdp['Hechas']+$pdp['Rechazo']) <> 0){$pdp['color'] = "#FFE5A9";}
            if($x<=0){$pdp['color'] = "#B4EEB4";}
        }
        //print_r($pdp_cta);
    //  Jalo todas las del ETE
        $sql = "SELECT * FROM maquinado.tempete WHERE Aio = $aio AND Semana = $wek";
        $tabete = $cta->lista($sql);
        //var_dump($tabete);
        $this->_view->assign('tabla', $pdp_cta);
        $this->_view->assign('semana', $wek);
        $this->_view->assign('titulo', 'PDPMA | En CTA');
        $this->_view->renderizar('cta3','');
    }
    
//  //  //  //  //  //  //  //  //  //  //  //  //  //  //  //  //  //  //  //  //  //  //  //  //  //  //  //  //  //  //  //  //  //  //  //  //  //  //  //  //  //  //  //  //  //
    public function save(){
        $MySQL = $this->loadModel("pdp_cta");
        $MySQL->open();
        
        $aux = explode("|",$_POST['maquina']);
        $_POST['maquina'] = $aux[0];
        $_POST['minutos'] = $aux[1];
        
        for($i=0; $i< $_POST['ncols']; $i++){
            $semana = $_POST['semana']+$i;
            if($semana > 53){
                $aio = date("Y")+1;
            }else
            {
                $aio = date("Y");
            }
            if(($_POST["s".$i] <> 0) AND ($_POST['maquina'] <> "")){
                $llave = $semana.$_POST['parte'];
                $cant = $_POST["s".$i];
                $tcant = $cant*$_POST['minutos'];
                $sql = "SELECT * FROM maquinado.pdp_cta WHERE llave = '$llave'";
                $rev = $MySQL->lista($sql);
                if( count($rev) <= 0){
                    $field = "llave, Maquina, Pieza, Cantidad, Semana, Aio, SemEntrega, Prioridad, Programado, Minutos";
                    $value = "'$llave', '$_POST[maquina]', '$_POST[parte]', $cant, $semana, $aio, '$_POST[SemEntrega]', $_POST[prioridad], 1, $tcant";
                    $sql = "INSERT INTO maquinado.pdp_cta($field)VALUES($value)";
                    print($sql)."\n";
                    $MySQL->setQuery($sql);
                }else{
                    //  UPDATE!!
                    $sql = "UPDATE maquinado.pdp_cta SET Cantidad = $cant, Minutos = $tcant WHERE llave = '$llave'";
                    print($sql)."\n";
                    $MySQL->setQuery($sql);
                    echo "Se actualizo";
                }
                
            }
            if($_POST["s".$i] == 0){
            //  Borrar
                $llave = $semana.$_POST['parte'];
                $sql = "DELETE FROM maquinado.pdp_cta WHERE llave = '$llave'";
                $MySQL->setQuery($sql);
            }
            
        }
    }
//  //  //  //  //  //  //  //  //  //  //  //  //  //  //  //  //  //  //  //  //  //  //  //  //  //  //  //  //  //  //  //  //  //  //  //  //  //  //  //  //  //  //  //  //  //    
    public function maqs(){
        $cta = $this->loadModel("pdp_cta");
        $cta->open();
        if($_POST['Matutino']== ''){$_POST['Matutino'] = 'null';}
        if($_POST['Vesperti']== ''){$_POST['Vesperti'] = 'null';}
        if($_POST['Nocturno']== ''){$_POST['Nocturno'] = 'null';}
    //  Reviso si existe
        $sql = "SELECT * FROM maquinado.pdp_maquina_turnos WHERE maquina = '$_POST[Maquina]' AND semana = $_POST[Semana]";
        $rev = $cta->lista($sql);
        if( count($rev) <> 0 ){
        //  Es decir, si hay registro
            $sql = "
            UPDATE maquinado.pdp_maquina_turnos SET
            Matutino = $_POST[Matutino],
            Vespertino = $_POST[Vesperti],
            Nocturno = $_POST[Nocturno],
            Minutos = $_POST[Minutos]
            WHERE maquina = '$_POST[Maquina]' AND semana = $_POST[Semana]";
        }else{
        //  Es decir, no hay registro
            $fld = "semana, maquina, Matutino, Vespertino, Nocturno, Minutos";
            $val = "$_POST[Semana], '$_POST[Maquina]', $_POST[Matutino], $_POST[Vesperti], $_POST[Nocturno], $_POST[Minutos]";
            $sql = "INSERT INTO maquinado.pdp_maquina_turnos($fld)VALUES($val)";
        }
        $pdp_cta = $cta->setQuery($sql);
        //print_r($_POST);
    }
//  //  //  //  //  //  //  //  //  //  //  //  //  //  //  //  //  //  //  //  //  //  //  //  //  //  //  //  //  //  //  //  //  //  //  //  //  //  //  //  //  //  //  //  //  //    
    public function listado($maquinapieza){
        
        $this->time += $maquinapieza->_Minutos;
        
        if($maquinapieza->_siguiente == null){
            return $this->time;
        }
        $maquinapieza->get('id',$maquinapieza->_siguiente);
        $this->listado($maquinapieza);
    }
//  //  //  //  //  //  //  //  //  //  //  //  //  //  //  //  //  //  //  //  //  //  //  //  //  //  //  //  //  //  //  //  //  //  //  //  //  //  //  //  //  //  //  //  //  //
    public function CAP(){
        $aio = date('Y');
        $wek = date('W');
        $cta = $this->loadModel("pdp_cta");
        $cta->open();
        $sql = "SELECT * FROM maquinado.pdp_cta WHERE Aio = $aio AND Semana = $wek ORDER BY Prioridad, Pieza";
        $pdp_cta = $cta->lista($sql);
        var_dump($pdp_cta);
    }
//  //  //  //  //  //  //  //  //  //  //  //  //  //  //  //  //  //  //  //  //  //  //  //  //  //  //  //  //  //  //  //  //  //  //  //  //  //  //  //  //  //  //  //  //  //
    public function sethold(){
        $cta = $this->loadModel("pdp_cta");
        $cta->open();
        $sql = "UPDATE maquinado.maq_piezas SET Hold = $_POST[activ] WHERE IDENTIFICACION = '$_POST[pieza]'";
        $pdp_cta = $cta->setQuery($sql);
    }
//  //  //  //  //  //  //  //  //  //  //  //  //  //  //  //  //  //  //  //  //  //  //  //  //  //  //  //  //  //  //  //  //  //  //  //  //  //  //  //  //  //  //  //  //  //
    public function maks($wek = null){
        if(!isset($wek)){
            $wek = date('W');
        }
        
//  <modelos>
        $cta = $this->loadModel("PDP_CTA");
        $cta->open();
        $empleado = $this->loadModel("Empleado",'dux');
//  </modelos>
    
//  <empleados>
        $sql = "SELECT Empleado.CODIGOANTERIOR, Empleado.NOMBRECOMPLETO
        FROM \"Empleado.nom\" Empleado
        WHERE (Empleado.ESTATUS<>'Baja') AND (Empleado.PUESTO IN('MAA 01','MAA 02'))
        ORDER BY Empleado.CODIGOANTERIOR";
        $empleado->open();
        
        $operador = $empleado->lista($sql);
        //var_dump($operador);
        //echo "todo bien";
        //exit;
        $empleado->close();
    //  Obtener los turnos
    
        foreach($operador as &$opr){
            $opr['maquinas'] = "<ul>";
            $opr['tiempo'] = 0;
            $opr['nomina'] = $opr['codigoanterior'];
            $opr['codigoanterior'] = (int)$opr['codigoanterior'];
            
        //  Matutino
            $sql = "SELECT maquina FROM maquinado.pdp_maquina_turnos WHERE pdp_maquina_turnos.semana = $wek AND pdp_maquina_turnos.Matutino = $opr[codigoanterior];";
            $aux = $cta->lista($sql);
            if( count($aux) > 0){
                foreach($aux as &$aux2){
                    $opr['maquinas'] .= "<li>".$aux2['maquina']."[M]</li>";
                    $opr['tiempo'] += 48;
                }
            }
            
        //  Vespertino
            $sql = "SELECT maquina FROM maquinado.pdp_maquina_turnos WHERE pdp_maquina_turnos.semana = $wek AND pdp_maquina_turnos.Vespertino = $opr[codigoanterior];";
            $aux = $cta->lista($sql);
            if( count($aux) > 0){
                foreach($aux as &$aux2){
                    $opr['maquinas'] .= "<li>".$aux2['maquina']."[V]</li>";
                    $opr['tiempo'] += 48;
                }
            }
            
        //  Nocturno
            $sql = "SELECT maquina FROM maquinado.pdp_maquina_turnos WHERE pdp_maquina_turnos.semana = $wek AND pdp_maquina_turnos.Nocturno = $opr[codigoanterior];";
            $aux = $cta->lista($sql);
            if( count($aux) > 0){
                foreach($aux as &$aux2){
                    $opr['maquinas'] .= "<li>".$aux2['maquina']."[N]</li>";
                    $opr['tiempo'] += 48;
                }
            }
            $opr['maquinas'] .= "</ul>";
        }
//  </empleados>
        //print_r($operador);
        $cta->open();
        $sql = "
        SELECT pdp_cta.Maquina, SUM(pdp_cta.Minutos) AS ttl
        FROM
        maquinado.pdp_cta
        INNER JOIN maquinado.maq_piezas ON maquinado.pdp_cta.Pieza = maquinado.maq_piezas.IDENTIFICACION
        WHERE
        maquinado.pdp_cta.Semana = $wek AND
        maquinado.maq_piezas.Hold = 0
        GROUP BY pdp_cta.Maquina
        ";
        $pdp_cta = $cta->lista($sql);
        $tmin = 0;
        $js = "\n";
        $cnt = 0;
        foreach($pdp_cta as &$pdp){
            $pdp['Matutino'] = null;
            $pdp['Vespertino'] = null;
            $pdp['Nocturno'] = null;
            $aux = null;
            $sql = "SELECT * FROM maquinado.maquina_operador WHERE maquina = '$pdp[Maquina]'";
            $aux = $cta->lista($sql);
            $oper["$pdp[Maquina]"] = $aux;
            $tmin += (int)$pdp['ttl'];
            $sql = "SELECT * FROM maquinado.pdp_maquina_turnos WHERE maquina = '$pdp[Maquina]' AND semana = $wek";
            $aux = $cta->lista($sql);
            //var_dump($aux);
            if( isset($aux[0]['Matutino']) ){
                $pdp['Matutino'] = $aux[0]['Matutino'];
                $js .= "$(\"#M".$cnt."\").val('$pdp[Matutino]');"."\n";
            }
            if( isset($aux[0]['Vespertino']) ){
                $pdp['Vespertino'] = $aux[0]['Vespertino'];
                $js .= "$(\"#V".$cnt."\").val('$pdp[Vespertino]');"."\n";
            }
            if( isset($aux[0]['Nocturno']) ){
                $pdp['Nocturno'] = $aux[0]['Nocturno'];
                $js .= "$(\"#N".$cnt."\").val('$pdp[Nocturno]');"."\n";
            }
            $cnt++;
        }
        
        $this->_view->assign('operador', $operador);
        $this->_view->assign('js', $js);
        $this->_view->assign('tabla', $pdp_cta);
        @$this->_view->assign('oper', $oper);
        $this->_view->assign('tmin', $tmin);
        $this->_view->assign('semana', $wek);
        $this->_view->renderizar('mkn','default');
    }
}
?>